iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
自我挑戰組

[LeetCode with JavaScript] 一起來刷 LeetCode吧 ~~~ (ノ>ω<)ノ系列 第 12

[LeetCode with JavaScript] Day 12: Merge Sorted Array

  • 分享至 

  • xImage
  •  

觀前提醒:

  1. 我預設大家已經先思考並分析過題目,沒啥想法才開始 google 找解題靈感。若無,建議每題先花 1~2 顆番茄鐘的時間來分析題目比較好。可參考番茄鐘工作法
  2. 承上,既然已經有思考過了,那我這邊直接 po 題目 + 解題想法 + code +心得 。若已經在 code 內有足夠的註解了,那我可能解題想法 & 心得的部分就不會寫太多,免得干擾你的思考。
  3. 所有解法都是已經取得系統的 Accepted,但或許不是最優解法,請多包涵。
  4. 若對於解法不太懂,可以嘗試用 Chrome 的 debugger 來試跑看看 (教學文)
  5. 最後,歡迎在下面留言指教~教學相長才會進步歐~/images/emoticon/emoticon41.gif

題目

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:

The number of elements initialized in nums1 and nums2 are m and n respectively.
You may assume that nums1 has enough space (size that is equal to m + n) to hold additional elements from nums2.
Example:

Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

Output: [1,2,2,3,5,6]

Constraints:

  • -10^9 <= nums1[i], nums2[i] <= 10^9
  • nums1.length == m + n
  • nums2.length == n

解題想法

  • 將 nums2 裡面的值,賦值到 nums1。(把 nums1 後面的 "0",直接蓋掉)
  • 將新增後的 nums1,利用 bubble sort 來重新整理該陣列。

CODE

/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function (nums1, m, nums2, n) {
  //將nums2裡面的值,賦值到 nums1。
  var indexOfNum2 = 0;
  for (var i = m; i < m + n; i++) {
    nums1[i] = nums2[indexOfNum2];
    indexOfNum2++;
  }
  // 將新增後的 nums1,利用 bubble sort 來重新整理該陣列。
    for (var k = j + 1; k <= nums1.length - 1; k++) {
      if (nums1[j] > nums1[k]) {
        let temp = nums1[j];
        nums1[j] = nums1[k];
        nums1[k] = temp;
      }
    }
  }
};

心得

其實一開始,我以為這題超簡單der,本來就是想把兩個陣列 concat 在一起,然後直接sort 掉就結束這一回合。但後來仔細看到題目下面這段:

// @return {void} Do not return anything, modify nums1 in-place instead.

馬上就發現到案情不單純,所以還是乖乖從陣列的原始處理模式來思考。後來有了想法後就實作看看,突然發現自己忘了第二段的 bubble sort 應該怎麼寫比較好。好在參考了下恩師-- PJCHENder 的文章,才把整段程式給收了尾巴/images/emoticon/emoticon37.gif
參考資料就在下方,路過幫分享個~老師的網站真的是大寶庫啊~

[演算法] 氣泡排序法(Bubble Sort):利用兩兩元素交換位置達到排序


謝謝大家的收看,LeetCode 小學堂我們下次見~/images/emoticon/emoticon29.gif


上一篇
[LeetCode with JavaScript] Day 11: Roman to Integer
下一篇
[LeetCode with JavaScript] Day 13: Valid Parentheses
系列文
[LeetCode with JavaScript] 一起來刷 LeetCode吧 ~~~ (ノ>ω<)ノ30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言